Skip to main content

Type 自訂型別

  • Go 不支援 overload → 但有對應的解決方案
package main

import "fmt"

// 底層型別為 int
type Test int
type Test2 int

func main() {
// 因為底層型別為 int,所以可以做運算
test := Test(87) + 1

test2 := Test2(34)

// 要轉成同型別
fmt.Println(test + Test(test2))
}
  • receiver parameter
package main

import "fmt"

func main() {
test := Test("test123")

test.SayHi()
}

// 底層型別為 string
type Test string

// receiver parameter
func (t Test) SayHi() {
fmt.Println("hi", t)
}
  • pointer parameter
package main

import "fmt"

func main() {

n := Number(2)
fmt.Println(n)

n.double()
fmt.Println(n)
}

type Number int

// 要用 pointer 才會變
func (n *Number) double() {
*n *= 2
}